Virtualization environments can provide multiple virtual machines (VMs) on a physical machine, with each VM looking like a full computer to “guest” software running inside the VM. This enables a user to concurrently run multiple copies of a guest operating system on one physical machine, with each guest having its own copy of “virtual hardware.”
Many of today's virtualization environments support VM input/output (I/O) operations by providing virtual I/O devices that are emulated in software. This I/O virtualization approach has many advantages, including insulating the guest operating system from the specifics of the physical hardware on which it is running. This insulation in turn simplifies the task of moving a VM from one physical server to another, a process referred to herein as “VM migration.” Such moves can occur “cold,” when the VM is not booted up; “warm,” when the VM is suspended; or “hot,” when the VM is running and continues to run while it is moved from one physical server to another. With emulated virtual I/O devices, the emulation can run on any physical server, independent of the specifics of the physical I/O device. As such, a migrating VM continues to see the same set of virtual I/O devices across the migration. In essence, virtual I/O devices provide uniformity, with the emulation layer masking any diversity at the level of the physical I/O devices.
Another approach to providing VMs with I/O is to expose a subset of a physical machine's I/O infrastructure to each VM. The exposed physical I/O devices are then directly accessed by a guest device driver, e.g., software running inside the VM. This approach is referred to herein as “guest device pass-through” or simply “pass-through.” There are a number of benefits to guest device pass-through, one of which is better performance. Emulation of virtual I/O devices consumes processor cycles, while the pass-through approach avoids much of the emulation overhead. As such, I/O operations from within a guest are likely to be faster with pass-through I/O devices then with emulated virtual I/O devices.
The pass-through I/O virtualization approach, however, makes it difficult to migrate VMs from one physical machine to another in a transparent manner because the specificity of physical I/O devices on the physical server is now exposed to guest software.
Additional information with regard to pass-through can be found in U.S. Provisional Patent Application Ser. No. 60/939,819 by M. Mahalingam et al., filed on May 23, 2007, entitled “Handling Interrupts When Virtual Machines of a Virtualized Computer System Have Direct Access to a Hardware Device,” for which a utility patent application was filed on May 21, 2008 having Ser. No. 12/124,893; and U.S. Provisional Patent Application Ser. No. 60/939,818 by M. Mahalingam et al., filed on May 23, 2007, entitled “Providing Virtual Machines of a Virtualized Computer System with Direct Access to a Hardware Device,” for which a utility patent application was filed on May 21, 2008 having Ser. No. 12/124,586; all of which are assigned to the assignee of the present application, and all of which applications are hereby incorporated by reference in their entirety.